using System;
using Sustainalytics.ESGRatings.Computing.Entities;
using Sustainalytics.ESGRatings.Computing.Entities.ESG;
using CompanyData = Sustainalytics.ESGRatings.Computing.Entities.ESG.CompanyData;
using IndicatorTemplate = Sustainalytics.ESGRatings.Computing.Entities.IndicatorTemplate;
using System.Collections.Generic;

namespace Sustainalytics.ESGRatings.DataContract
{

    public class ESGDataContainerDTO
    {
        public Guid setId { get; set; }
        public bool isActive { get; set; }
    }

    public class ESGDataContainer
    {
        public ESGDataContainer()
        {
        }

        public ESGDataContainer(Guid setId, string setName, List<CompanyData> companies, List<CompanyScores> companiesScores, List<IndicatorTemplate> indicatorTemplates, List<WeightMatrix> matrices, List<ReferenceUniverse> referenceUniverses, bool isActive = false, Guid? defaultMatrixId = null)
        {
            this.Companies = companies.ToArray();
            this.CompaniesScores = companiesScores.ToArray();
            this.IndicatorTemplates = indicatorTemplates.ToArray();
            this.Matrices = matrices.ToArray();
            this.ReferenceUniverses = referenceUniverses.ToArray();
            this.SetId = setId;
            this.SetName = setName;
            IsActive = isActive;
            DefaultMatrixId = defaultMatrixId;
        }

        public CompanyData[] Companies { get; set; }

        public CompanyScores[] CompaniesScores { get; set; }

        public IndicatorTemplate[] IndicatorTemplates { get; set; }

        public WeightMatrix[] Matrices { get; set; }

        public ReferenceUniverse[] ReferenceUniverses { get; set; }

        public Guid? DefaultMatrixId { get; private set; }

        public Guid SetId { get; set; }

        public string SetName { get; set; }

        public bool IsActive { get; set; }

    }
}